package com.mxb.annotation;

import java.lang.annotation.*;

/**
 * 自定义Autowired注解
 *
 * Target元注解表示允许这个注解可以使用的范围
 *     ElementType枚举：
 *     1.CONSTRUCTOR:用于描述构造器
 *     2.FIELD:用于描述域
 *     3.LOCAL_VARIABLE:用于描述局部变量
 *     4.METHOD:用于描述方法
 *     5.PACKAGE:用于描述包
 *     6.PARAMETER:用于描述参数
 *     7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
 *
 * Retention元注解表示该自定义注解被保留的生命周期
 *     RetentionPolicy枚举：
 *     1.SOURCE:在源文件中有效（即源文件保留）
 *     2.CLASS:在class文件中有效（即class保留）
 *     3.RUNTIME:在运行时有效（即运行时保留）
 *
 * Documented注解标记的元素，Javadoc工具会将此注解标记元素的注解信息包含在javadoc中
 *
 * @Author: MaXiaobing
 * @Date: 2021/4/17 15:27
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {

    boolean required() default true;

}
